home *** CD-ROM | disk | FTP | other *** search
Wrap
package com.anyEase.ScreenSaver; import java.util.Calendar; import java.util.Date; import java.util.Random; import javax.microedition.lcdui.Canvas; import javax.microedition.lcdui.ChoiceGroup; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Font; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.Gauge; import javax.microedition.lcdui.Graphics; import javax.microedition.lcdui.Image; import javax.microedition.lcdui.TextField; import javax.microedition.rms.RecordComparator; import javax.microedition.rms.RecordEnumeration; import javax.microedition.rms.RecordFilter; import javax.microedition.rms.RecordStore; import javax.microedition.rms.RecordStoreNotFoundException; public class TextMain extends Canvas implements CommandListener, Runnable { final byte NOSHOW = 0; final byte SHOWTEXT = 1; final byte SHOWDATE = 2; final byte SHOWTIME = 3; BounceText text; Command cmdExit; Command cmdAbout; Command cmdHelp; Command cmdRestart; Command cmdSpeed; Command[] cmdEdit; Command cmdTZone; Command cmdBack; int nWidth; int nHeight; int speed = 50; int numBlocks = 3; boolean bPause; boolean bRun = true; Thread thread; Image imgBack; Graphics graphBack; int nType = 0; Form form; TextField textfield; ChoiceGroup choice; Gauge gauge; long offset; int num; Block[] block; public TextMain(BounceText var1) { this.text = var1; this.cmdExit = new Command("Exit", 7, 0); this.cmdAbout = new Command("About", 1, 1); this.cmdHelp = new Command("Help", 1, 2); this.cmdRestart = new Command("Restart", 1, 3); this.cmdTZone = new Command("Time Different", 1, 4); this.cmdSpeed = new Command("Speed", 1, 5); this.cmdBack = new Command("Back", 2, 1); ((Displayable)this).addCommand(this.cmdExit); ((Displayable)this).addCommand(this.cmdAbout); ((Displayable)this).addCommand(this.cmdHelp); ((Displayable)this).addCommand(this.cmdRestart); this.cmdEdit = new Command[3]; for(int var2 = 0; var2 < this.cmdEdit.length; ++var2) { this.cmdEdit[var2] = new Command("Edit Text " + (var2 + 1), 1, 3); ((Displayable)this).addCommand(this.cmdEdit[var2]); } ((Displayable)this).addCommand(this.cmdTZone); ((Displayable)this).addCommand(this.cmdSpeed); ((Displayable)this).setCommandListener(this); this.nWidth = ((Canvas)this).getWidth(); this.nHeight = ((Canvas)this).getHeight(); this.imgBack = Image.createImage(this.nWidth, this.nHeight); this.graphBack = this.imgBack.getGraphics(); this.block = new Block[this.numBlocks]; this.init(); this.thread = new Thread(this); this.thread.start(); this.getTime((byte)1); } public String addZeroForSmall(int var1) { return var1 < 10 ? "0" + Integer.toString(var1) : Integer.toString(var1); } public void commandAction(Command var1, Displayable var2) { if (var2.getClass().isInstance(this.form)) { if (var1 == this.cmdBack) { switch (this.nType) { case 1: case 2: case 3: default: break; case 4: this.setTimeDiff(this.textfield.getString()); break; case 5: this.speed = (11 - this.gauge.getValue()) * 10; if (this.speed > 100) { this.speed = 100; } this.save((byte)8); break; case 6: this.block[this.nType - 6].setType((byte)this.choice.getSelectedIndex()); this.block[this.nType - 6].setLabel(this.textfield.getString()); this.save((byte)1); this.save((byte)2); break; case 7: this.block[this.nType - 6].setType((byte)this.choice.getSelectedIndex()); this.block[this.nType - 6].setLabel(this.textfield.getString()); this.save((byte)3); this.save((byte)4); break; case 8: this.block[this.nType - 6].setType((byte)this.choice.getSelectedIndex()); this.block[this.nType - 6].setLabel(this.textfield.getString()); this.save((byte)5); this.save((byte)6); } this.form = null; this.textfield = null; this.choice = null; this.gauge = null; Display.getDisplay(this.text).setCurrent(this); } } else if (var1 == this.cmdExit) { this.bRun = false; this.text.destroyApp(false); this.text.notifyDestroyed(); } else { if (var1 == this.cmdAbout) { this.nType = 1; } else if (var1 == this.cmdHelp) { this.nType = 2; } else if (var1 == this.cmdRestart) { this.nType = 3; } else if (var1 == this.cmdTZone) { this.nType = 4; } else if (var1 == this.cmdSpeed) { this.nType = 5; } else { for(int var3 = 0; var3 < this.cmdEdit.length; ++var3) { if (var1 == this.cmdEdit[var3]) { this.nType = 6 + var3; } } } this.doSetup(this.nType); } } public void doSetup(int var1) { if (var1 >= 1 && var1 <= 8) { if (var1 == 3) { this.reset(); } else { this.form = new Form("Setup"); this.form.addCommand(this.cmdBack); this.form.setCommandListener(this); if (var1 == 1) { this.form.setTitle("About"); this.form.append("BounceText is a screen savers for java enabled mobile phone.\rIf you have any contents and questions,please contact support@anyease.com.\rWelcome visit www.anyease.com for more information about it and the other software.\rCopyright anyEase 2002."); } else if (var1 == 2) { this.form.setTitle("Help"); this.form.append("You can input different content for each text and decide which text show what content.\r You can set the speed of run and the time different when you show time."); } else if (var1 == 4) { this.textfield = new TextField("Time difference:", Long.toString(this.offset / 3600000L), 3, 0); this.form.append(this.textfield); } else if (var1 == 5) { this.gauge = new Gauge("Speed:", true, 10, 11 - this.speed / 10); this.form.append(this.gauge); } else if (var1 == 6 || var1 == 7 || var1 == 8) { this.textfield = new TextField("Private Content:", this.block[var1 - 6].getLabel(), 10, 0); this.form.append(this.textfield); this.choice = new ChoiceGroup("Show setting:", 1); this.choice.append("Don't Show", (Image)null); this.choice.append("Private Content", (Image)null); this.choice.append("Show Date", (Image)null); this.choice.append("Show Time", (Image)null); this.choice.setSelectedIndex(this.block[var1 - 6].getType(), true); this.form.append(this.choice); } Display.getDisplay(this.text).setCurrent(this.form); } } } public String getTime(byte var1) { String var2 = ""; Calendar var3 = Calendar.getInstance(); Date var4 = new Date(); var4.setTime(this.offset + var4.getTime()); var3.setTime(var4); if (var1 == 2) { var2 = this.addZeroForSmall(var3.get(2)) + "/" + this.addZeroForSmall(var3.get(5)) + " " + this.getWeekString(var3.get(7)); } else if (var1 == 3) { var2 = this.addZeroForSmall(var3.get(11)) + ":" + this.addZeroForSmall(var3.get(12)) + ":" + this.addZeroForSmall(var3.get(13)); } return var2; } public String getWeekString(int var1) { String var2 = ""; switch (var1) { case 1: var2 = "Sun"; break; case 2: var2 = "Mon"; break; case 3: var2 = "Tue"; break; case 4: var2 = "Wed"; break; case 5: var2 = "Thu"; break; case 6: var2 = "Fri"; break; case 7: var2 = "Sat"; } return var2; } public void init() { Random var1 = new Random(); int[] var2 = new int[4]; for(int var3 = 0; var3 < this.numBlocks; ++var3) { var2[0] = Math.abs(var1.nextInt() % (this.nWidth / 2)); var2[1] = Math.abs(var1.nextInt() % (this.nHeight / 2)); var2[2] = var1.nextInt(); var2[3] = var1.nextInt(); this.block[var3] = new Block("Text " + (var3 + 1), this.nWidth, this.nHeight); this.block[var3].init(var2[0], var2[1], var2[2], var2[3]); } this.read(); Object var4 = null; } public void paint(Graphics var1) { this.graphBack.setColor(0); this.graphBack.fillRect(0, 0, this.nWidth, this.nHeight); for(int var2 = 0; var2 < this.numBlocks; ++var2) { byte var3 = this.block[var2].getType(); if (var3 != 0) { if (var3 == 2 || var3 == 3) { this.block[var2].setLabel(this.getTime(var3)); } this.block[var2].move(); this.block[var2].paint(this.graphBack); } } if (this.num > 6000) { this.graphBack.setColor(0); this.graphBack.fillRect(0, 0, this.nWidth, this.nHeight); this.graphBack.setColor(255, 255, 255); this.graphBack.setFont(Font.getFont(0, 0, 8)); this.graphBack.drawString("Demo Version", 2, 2, 20); this.graphBack.drawString("Play again!", 2, 12, 20); this.graphBack.drawString("www.anyEase.com", 2, 22, 20); this.graphBack.drawString("Buy it from anyEase", 2, 32, 20); this.graphBack.drawString("or from Handango.", 2, 42, 20); } else { ++this.num; } var1.drawImage(this.imgBack, 0, 0, 20); } public void read() { Object var1 = null; Object var2 = null; try { RecordStore var16 = RecordStore.openRecordStore("com.anyEase.ScreenSaver.Text", false); RecordEnumeration var18 = var16.enumerateRecords((RecordFilter)null, (RecordComparator)null, false); for(int var29 = 8; var18.hasNextElement(); --var29) { byte[] var6 = var18.nextRecord(); switch (var29) { case 1: this.block[0].setLabel(new String(var6)); break; case 2: this.block[0].setType(Byte.parseByte(new String(var6))); break; case 3: this.block[1].setLabel(new String(var6)); break; case 4: this.block[1].setType(Byte.parseByte(new String(var6))); break; case 5: this.block[2].setLabel(new String(var6)); break; case 6: this.block[2].setType(Byte.parseByte(new String(var6))); break; case 7: this.offset = Long.parseLong(new String(var6)); break; case 8: this.speed = Integer.parseInt(new String(var6)); } } var18.destroy(); var16.closeRecordStore(); } catch (RecordStoreNotFoundException var12) { try { RecordStore var15 = RecordStore.openRecordStore("com.anyEase.ScreenSaver.Text", true); Object var5 = null; byte[] var20 = this.block[0].getLabel().getBytes(); var15.addRecord(var20, 0, var20.length); var20 = Integer.toString(this.block[0].getType()).getBytes(); var15.addRecord(var20, 0, var20.length); var20 = this.block[1].getLabel().getBytes(); var15.addRecord(var20, 0, var20.length); var20 = Integer.toString(this.block[1].getType()).getBytes(); var15.addRecord(var20, 0, var20.length); var20 = this.block[2].getLabel().getBytes(); var15.addRecord(var20, 0, var20.length); var20 = Integer.toString(this.block[2].getType()).getBytes(); var15.addRecord(var20, 0, var20.length); var20 = Long.toString(this.offset).getBytes(); var15.addRecord(var20, 0, var20.length); var20 = Integer.toString(this.speed).getBytes(); var15.addRecord(var20, 0, var20.length); Object var28 = null; var15.closeRecordStore(); } catch (Exception var11) { } } catch (Exception var13) { System.out.println("Other exception in read() : " + ((Throwable)var13).getMessage()); } finally { var2 = null; var1 = null; } } public void reset() { Random var1 = new Random(); int[] var2 = new int[4]; for(int var3 = 0; var3 < this.numBlocks; ++var3) { var2[0] = Math.abs(var1.nextInt() % (this.nWidth / 2)); var2[1] = Math.abs(var1.nextInt() % (this.nHeight / 2)); var2[2] = var1.nextInt(); var2[3] = var1.nextInt(); this.block[var3].init(var2[0], var2[1], var2[2], var2[3]); } Object var4 = null; } public void run() { for(; this.bRun; ((Canvas)this).repaint()) { try { Thread.sleep((long)this.speed); } catch (InterruptedException var1) { return; } } } public void save(byte var1) { Object var2 = null; try { RecordStore var10 = RecordStore.openRecordStore("com.anyEase.ScreenSaver.Text", false); Object var5 = null; switch (var1) { case 1: byte[] var19 = this.block[0].getLabel().getBytes(); var10.setRecord(var1, var19, 0, var19.length); break; case 2: byte[] var18 = Integer.toString(this.block[0].getType()).getBytes(); var10.setRecord(var1, var18, 0, var18.length); break; case 3: byte[] var17 = this.block[1].getLabel().getBytes(); var10.setRecord(var1, var17, 0, var17.length); break; case 4: byte[] var16 = Integer.toString(this.block[1].getType()).getBytes(); var10.setRecord(var1, var16, 0, var16.length); break; case 5: byte[] var15 = this.block[2].getLabel().getBytes(); var10.setRecord(var1, var15, 0, var15.length); break; case 6: byte[] var14 = Integer.toString(this.block[2].getType()).getBytes(); var10.setRecord(var1, var14, 0, var14.length); break; case 7: byte[] var13 = Long.toString(this.offset).getBytes(); var10.setRecord(var1, var13, 0, var13.length); break; case 8: byte[] var12 = Integer.toString(this.speed).getBytes(); var10.setRecord(var1, var12, 0, var12.length); } var10.closeRecordStore(); var5 = null; } catch (Exception var8) { } finally { var2 = null; } } public void setTimeDiff(String var1) { try { this.offset = (long)(Integer.parseInt(var1) * 3600000); this.save((byte)7); } catch (Exception var2) { } } }